package com.wzs.rpc.protocol;

import lombok.*;

/**
 * 协议消息结构
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage<T>{
    private Header header;
    private T body;

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Header {
        /**
         * 魔数
         */
        private byte magic;
        /**
         * 版本号
         */
        private byte version;
        /**
         * 序列化器
         */
        private byte serializer;
        /**
         * 消息类型（请求/响应）
         */
        private byte type;
        /**
         * 状态
         */
        private byte status;
        /**
         * 请求id
         */
        private long requestId;
        /**
         * 消息体长度
         */
        private int bodyLength;
    }
}
